// UVA 1616 Caravan Robbers
// Greedy, Binary Search, Enumeration

// TODO: 最难的点好像在枚举分母上？
#include <bits/stdc++.h>
using namespace std;

#define INF 0x3f3f3f3f
#define lowbit(x) x &(-x)

int n;

int gcd(int a, int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}

struct interval {
  long double l, r;
  bool operator<(const interval &rhs) const {
    if (l == rhs.l) return r < rhs.r;
    return l < rhs.l;
  }
} inters[100010];

bool valid(long double x) {
  long double cur = 0;
  for (int i = 0; i < n; ++i) {
    cur = max(cur, inters[i].l);  // 贪心法，选最左边的
    cur += x;
    if (cur > inters[i].r) return false;
  }
  return true;
}

int main() {
  while (cin >> n) {
    for (int i = 0; i < n; ++i) cin >> inters[i].l >> inters[i].r;
    sort(inters, inters + n);
    // 二分答案
    long double a = 0, b = 1000010, mid;
    for (int i = 0; i < 100; ++i) {
      mid = (a + b) / 2;
      if (valid(mid))
        a = mid;
      else
        b = mid;
    }
    // 枚举分母
    int p, q = 1, fp = 100100, fq = 1;
    for (q = 1; q <= n; ++q) {
      p = round(mid * q);
      if (fabs((long double)p / q - mid) < fabs((long double)fp / fq - mid)) {
        fp = p;
        fq = q;
      }
    }
    int g = gcd(max(fp, fq), min(fp, fq));
    cout << fp / g << "/" << fq / g << endl;
  }
  return 0;
}
